package ca.etsmtl.log120.tp3.rangs;

import ca.etsmtl.log120.tp3.cartes.Denomination;
import ca.etsmtl.log120.tp3.mains.Main;

/******************************************************
Cours : LOG120
Session : E2011
Groupe : 01
Projet : Laboratoire #3
Etudiants : Nicolas Blais Miko
 	 		Yohan Trepanier-Montpetit
Codes perm. : BLAN24079109
			  TREY16079108
Professeur : Chamseddine Talhi
Charge de labo : Eric Goulet
Nom du fichier : ListeAnalyseurs.java
Date cree : 2011-07-06
Date dern. modif. 2011-07-06
*************************************************** ****
Historique des modifications
*************************************************** ****

***************************************************/

public class MainPleine extends AbstractCartesPareilles{
	
	private static final int NOMBRE_CARTES_IDENTIQUES = 5;
	
	/**
	 * constructeur par defaut
	 */
	public MainPleine(){}
	
	/**
	 * Constructeur par copie d'objet
	 * @param mainPleine La main pleine pour laquelle on veut creer une copie
	 */
	public MainPleine(MainPleine mainPleine) {
		
		this.denom = mainPleine.denom;
		this.resteMain = mainPleine.resteMain;
	}

	/**
	 * On override la methode de AbstractCartesPareilles pour les specificites d'une main pleine
	 */
	@Override
	public boolean reconnaitreMain(Main main) {
		Main mainMod;
		denom = UtilMain.isIdentique(main, 3);
		
		if(denom != null)
			mainMod = UtilMain.removeDenom(main, denom);
		else
			return false;
		
		resteMain[0] = UtilMain.isIdentique(mainMod, 2);

		if(resteMain[0] != null)
			return true;
		else
			return false;
	}

	/**
	 * On retourne la denomination du triple
	 */
	@Override
	public Denomination getTopDenomination() {
		return denom;
	}

	/**
	 * Inutile pour la main pleine
	 */
	@Override
	protected int getNombreCartesIdentique() {

		return NOMBRE_CARTES_IDENTIQUES;
	}

	/**
	 * On retourne un nouvel objet de type MainPleine
	 */
	@Override
	public AbstractRangAnalysable clone() {
		
		return new MainPleine(this);
	}

	/**
	 * Inutile ici puisqu'on ne compare que 5 cartes et ce rang comporte 5 cartes obligatoirement
	 */
	@Override
	public void determineResteMain(Main main) {}

}
